﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace Marbles.Data
{
    public interface IDataSource
    {
        void Close();
        int ExecuteCommand(DataSourceCommand Command);
        DataSet FetchDataSet(DataSourceCommand Command);
        DataTable FetchDataTable(DataSourceCommand Command);
        IDataReader FetchReader(DataSourceCommand Command);

        string[] ListDatabases();
        DataSourceTable[] ListTables(string Database);
        DataSourceTableDefinition GetTableDefinition(DataSourceTable Table);

        bool IsConnected();
        void Open();

        string Provider { get; }
    }
}
